package cn.tedu.csmall.product.mapper;

import cn.tedu.csmall.product.pojo.entity.Brand;
import cn.tedu.csmall.product.pojo.vo.BrandListItemVO;
import cn.tedu.csmall.product.pojo.vo.BrandStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理产品品牌的接口
 */
@Repository
public interface BrandMapper {
    /**
     * 插入品牌信息
     * @param brand  封装进去的品牌属性
     * @return     受影响的行数
     */
    int insert(Brand brand);

    /**
     * 批量插入品牌属性集合
     * @param brands    要插入的品牌集合
     * @return          受影响的行数
     */
    int insertBatch(List<Brand> brands);

    /**
     * 根据id删除品牌
     * @param id    要删除的品牌的id
     * @return      返回受影响的行数
     */
    int deleteById(Long id);

    /**
     * 批量删除品牌
     * @param ids   要删除的品牌数组
     * @return      受影响的行数
     */
    int deleteByIds(Long[] ids);

    /**
     * 根据id修改品牌信息
     * @param brand    封装进去的要修改的品牌
     * @return         受影响的行数
     */
    int update(Brand brand);

    /**
     * 查询品牌数量
     * @return  品牌数量
     */
    int count();

    /**
     * 通过品牌名查询数据库中该品牌出现的次数
     * @param name  要查询的名字
     * @return      查询到的次数
     */
    int countByName(String name);

    /**
     * 根据id查询品牌的标准属性
     * @param id    要查询的id
     * @return      查询品品牌的标准属性对象
     */
    BrandStandardVO getStandardById(Long id);

    /**
     * 查询品牌的列表信息
     * @return  品牌信息集合
     */
    List<BrandListItemVO> listBrand();


}
